package com.ego.product.po;

import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.math.BigDecimal;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.ego.common.to.SkuEsTo;
import com.ego.product.vo.spu.Sku;
import lombok.Data;

/**
 * @program: ego
 * @description sku信息
 * @author KamTang
 * @date 2022-11-13 12:56:14
 */
@Data
@TableName("pms_sku_info")
public class SkuInfo implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * skuId
	 */
	@TableId
	private Long skuId;
	/**
	 * spuId
	 */
	private Long spuId;
	/**
	 * sku名称
	 */
	private String skuName;
	/**
	 * sku介绍描述
	 */
	private String skuDesc;
	/**
	 * 所属分类id
	 */
	private Long categoryId;
	/**
	 * 品牌id
	 */
	private Long brandId;
	/**
	 * 默认图片
	 */
	private String skuDefaultImg;
	/**
	 * 标题
	 */
	private String skuTitle;
	/**
	 * 副标题
	 */
	private String skuSubtitle;
	/**
	 * 价格
	 */
	private BigDecimal price;
	/**
	 * 销量
	 */
	private Long saleCount;

	public static SkuInfo build(SpuInfo spuInfo, Sku sku, String defaultImg) {
		SkuInfo skuInfo = BeanUtil.copyProperties(sku, SkuInfo.class);
		skuInfo.setBrandId(spuInfo.getBrandId());
		skuInfo.setCategoryId(spuInfo.getCategoryId());
		skuInfo.setSaleCount(0L);
		skuInfo.setSpuId(spuInfo.getId());
		skuInfo.setSkuDefaultImg(defaultImg);
		return skuInfo;
	}

	public SkuEsTo toTo(Map<Long, Boolean> finalStockMap, Brand brand, Category category, List<SkuEsTo.Attrs> attrs) {
		SkuEsTo skuEsTo = new SkuEsTo();
		BeanUtil.copyProperties(this, skuEsTo);
		skuEsTo.setSkuImg(this.skuDefaultImg);
		skuEsTo.setSkuPrice(this.price);
		// 设置库存信息
		skuEsTo.setHasStock(finalStockMap == null || finalStockMap.get(this.getSkuId()));
		// 热度评分
		skuEsTo.setHotScore(0L);
		// 品牌和分类信息
		skuEsTo.setBrandImg(brand.getLogo());
		skuEsTo.setBrandName(brand.getName());
		skuEsTo.setCategoryName(category.getName());
		// 设置检索属性
		skuEsTo.setAttrs(attrs);
		return skuEsTo;
	}
}
